#pragma once
#include "DXAMLCommon.h"
#include "IObject.h"

#include "IPALUri.h"
#include "IPALMemory.h"


using namespace std;


struct IPALResourceManager :
	public IObject
{
public:
	virtual HRESULT IsLocalResource(struct IPALUri * pUri, XBOOL * pIsLocalResource) = 0;
	virtual HRESULT TryLoadResource(struct IPALUri * pUri, struct IPALMemory * * ppMemory) = 0;
	virtual HRESULT TryGetResourceLocation(struct IPALUri * pUri, CXString * * ppResourceLocation) = 0;
	virtual HRESULT GetPropertyBag(const CXString & xUid, const struct IPALUri * pBaseUri, xpairlist<xshared_ptr<CXString>,xshared_ptr<CXString> > * * ppPropertyBag) = 0;
	virtual HRESULT CombineResourceUri(struct IPALUri * pBaseUri, const CXString * pFragment, struct IPALUri * * ppCombinedUri) = 0;
	virtual HRESULT IsAmbiguousUriFragment(const CXString * pUriFragment, XBOOL * pIsAmbiguous) = 0;
	virtual HRESULT CanCacheResource(const struct IPALUri * pUri, XBOOL * pCanCache) = 0;

};